# coding: utf-8


"""
这个文件仅仅是为了 PyInstaller 打包用
"""

import sys
import os
import typer
from pathlib import Path
from core_client import init_file, init_mic


def check_singleton():
    """检查是否已有客户端实例在运行"""
    lock_file = Path("client.lock")

    if lock_file.exists():
        try:
            # 检查锁文件中的PID是否仍在运行
            with open(lock_file, 'r') as f:
                old_pid = int(f.read().strip())

            # 在Windows上检查进程是否存在
            if os.name == 'nt':
                import psutil
                if psutil.pid_exists(old_pid):
                    print(f"客户端已在运行 (PID: {old_pid})")
                    return False
            else:
                # Unix系统
                try:
                    os.kill(old_pid, 0)
                    print(f"客户端已在运行 (PID: {old_pid})")
                    return False
                except OSError:
                    pass
        except (ValueError, FileNotFoundError):
            pass

        # 清理无效的锁文件
        lock_file.unlink(missing_ok=True)

    # 创建新的锁文件
    with open(lock_file, 'w') as f:
        f.write(str(os.getpid()))

    return True


def cleanup_lock():
    """清理锁文件"""
    lock_file = Path("client.lock")
    lock_file.unlink(missing_ok=True)


if __name__ == "__main__":
    if not check_singleton():
        input("按回车退出...")
        sys.exit(1)

    try:
        # 如果参数传入文件，那就转录文件
        # 如果没有多余参数，就从麦克风输入
        if sys.argv[1:]:
            typer.run(init_file)
        else:
            init_mic()
    finally:
        cleanup_lock()